package com.pyl.admin.system.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
import com.pyl.admin.core.enums.ExcelType;
import com.pyl.admin.core.excel.annotation.Excel;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * <p>
 * 
 * </p>
 *
 * @author 灵魂贰婶
 * @since 2019-06-19
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Excel("用户数据")
public class SysUser implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 主键ID
	 */
	@TableId(value = "id", type = IdType.AUTO)
	@Excel(value = "用户ID", type = ExcelType.EXPORT)
	private Long id;
	/**
	 * 用户名
	 */
	@TableField("username")
	@Excel("用户名")
	private String username;
	/**
	 * 用户昵称
	 */
	@TableField("nickname")
	@Excel("昵称")
	private String nickname;
	/**
	 * 密码
	 */
	@TableField("password")

	private String password;
	/**
	 * 密码盐
	 */
	@TableField("salt")
	private String salt;
	/**
	 * 部门ID
	 */
	@TableField("dept_id")
	private Long deptId;

	/**
	 * 部门名
	 */
	@TableField("dept_name")
	@Excel("所属部门")
	private String deptName;

	/**
	 * 头像
	 */
	@TableField("picture")
	private String picture;
	/**
	 * 性别（1:男,2:女）
	 */
	@TableField("sex")
	@Excel(value = "性别", dict = "USER_SEX")
	private String sex;
	/**
	 * 邮箱
	 */
	@TableField("email")
	@Excel("电子邮箱")
	private String email;
	/**
	 * 电话号码
	 */
	@TableField("phone")
	@Excel("手机号码")
	private String phone;
	/**
	 * 是否拥有角色
	 */
	@TableField("is_role")
	private Integer isRole;

	/**
	 * 备注
	 */
	@TableField("remark")
	private String remark;
	/**
	 * 创建时间
	 */
	@TableField("create_date")
	@Excel("创建时间")
	private Date createDate;
	/**
	 * 更新时间
	 */
	@TableField("update_date")
	@Excel("修改时间")
	private Date updateDate;
	/**
	 * 状态（1:正常,2:冻结,3:删除）
	 */
	@TableField("status")
	private Integer status;

	@TableField(exist = false)
	private List<SysRole> roles;

	@TableField(exist = false)
	private SysDept dept;

}
